package com.zd.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.zd.dao.CheckItemDao;
import com.zd.entity.PageResult;
import com.zd.entity.QueryPageBean;
import com.zd.pojo.CheckItem;
import com.zd.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/*
    检查项服务
*/
@Service(interfaceClass = CheckItemService.class)//暴露服务
@Transactional//事务注解
public class CheckItemServiceImpl implements CheckItemService {
    //注入Dao对象
    @Autowired
    private CheckItemDao checkItemDao;

    @Override
    public void add(CheckItem checkItem) {//检查项增加
        checkItemDao.add(checkItem);
    }

    @Override
    public PageResult pageQuery(QueryPageBean queryPageBean) {//检查项分页查询
        Integer currentPage = queryPageBean.getCurrentPage();
        Integer pageSize = queryPageBean.getPageSize();
        String queryString = queryPageBean.getQueryString();//查询条件
        //完成分页查询功能，是基于mybatis框架提供的分页助手插件完成的
        PageHelper.startPage(currentPage,pageSize);
        Page<CheckItem> page=checkItemDao.selectByCondition(queryString);
        //返回值要的是PageResult,但是这里的返回值给的是分页助手返回的page
        //通过page这个分页助手的功能，.getTotal()，.getResult()，可以得到返回的总数和返回的数组
        long total = page.getTotal();
        List<CheckItem> rows = page.getResult();
        PageResult pageResult=new PageResult(total,rows);
        return pageResult;
    }

    @Override
    public void deleteById(Integer id) {//根据ID删除检查项
        //判断当前检查项是否已经关联到检查组了
        long count = checkItemDao.findCountByCheckItemId(id);
        if(count>0){
            //大于0表示当前检查项已经被关联检查组了，不允许删除=====>直接抛出异常
            new RuntimeException();
        }
        //如果count为0表示检查项现在没有在检查组里，可以执行删除操作
        checkItemDao.deleteById(id);
    }

    @Override
    public void edit(CheckItem checkItem) {//编辑检查项数据
        checkItemDao.edit(checkItem);
    }

    @Override
    public CheckItem findById(Integer id) {//回显检查项数据
        return checkItemDao.findById(id);
    }

    @Override
    public List<CheckItem> findAll() {//查找所有的检查项
        return checkItemDao.findAll();
    }


}
